function Calc(){this.initialize();};Calc.prototype = new YYParser([
	{//State 0
		Default : -1,
		gotos : {
			'input' : 1
		}
	},
	{//State 1
		actions : {
			'NUM' : 7,
			'' : 5,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			";" : 6,
			'REG' : 10
		},
		gotos : {
			'exp' : 4,
			'statement' : 9
		}
	},
	{//State 2
		actions : {
			'NUM' : 7,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			'REG' : 10
		},
		gotos : {
			'exp' : 11
		}
	},
	{//State 3
		Default : -6
	},
	{//State 4
		actions : {
			"-" : 12,
			"^" : 17,
			"*" : 18,
			";" : 14,
			"+" : 13,
			"/" : 16,
			"," : 15
		}
	},
	{//State 5
		Default : 0
	},
	{//State 6
		Default : -3
	},
	{//State 7
		Default : -5
	},
	{//State 8
		actions : {
			'NUM' : 7,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			'REG' : 10
		},
		gotos : {
			'exp' : 19
		}
	},
	{//State 9
		Default : -2
	},
	{//State 10
		Default : -7
	},
	{//State 11
		Default : -13
	},
	{//State 12
		actions : {
			'NUM' : 7,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			'REG' : 10
		},
		gotos : {
			'exp' : 20
		}
	},
	{//State 13
		actions : {
			'NUM' : 7,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			'REG' : 10
		},
		gotos : {
			'exp' : 21
		}
	},
	{//State 14
		Default : -4
	},
	{//State 15
		actions : {
			'NUM' : 7,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			'REG' : 10
		},
		gotos : {
			'exp' : 22
		}
	},
	{//State 16
		actions : {
			'NUM' : 7,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			'REG' : 10
		},
		gotos : {
			'exp' : 23
		}
	},
	{//State 17
		actions : {
			'NUM' : 7,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			'REG' : 10
		},
		gotos : {
			'exp' : 24
		}
	},
	{//State 18
		actions : {
			'NUM' : 7,
			'STR' : 3,
			"-" : 2,
			"(" : 8,
			'REG' : 10
		},
		gotos : {
			'exp' : 25
		}
	},
	{//State 19
		actions : {
			"-" : 12,
			"^" : 17,
			"*" : 18,
			"+" : 13,
			"/" : 16,
			"," : 15,
			")" : 26
		}
	},
	{//State 20
		actions : {
			"/" : 16,
			"^" : 17,
			"*" : 18
		},
		Default : -9
	},
	{//State 21
		actions : {
			"/" : 16,
			"^" : 17,
			"*" : 18
		},
		Default : -8
	},
	{//State 22
		actions : {
			"-" : 12,
			"+" : 13,
			"/" : 16,
			"^" : 17,
			"*" : 18
		},
		Default : -14
	},
	{//State 23
		actions : {
			"^" : 17
		},
		Default : -12
	},
	{//State 24
		Default : -11
	},
	{//State 25
		actions : {
			"^" : 17
		},
		Default : -10
	},
	{//State 26
		Default : -15
	}
],
                                  
[
	[//Rule 0
		 '$start', 2,undefined
	],
	[//Rule 1
		 'input', 0,undefined
	],
	[//Rule 2
		 'input', 2,undefined
	],
	[//Rule 3
		 'statement', 1,
function($_)//line 22 "examples\calc\Calc.ypj.yp"
{  }
	],
	[//Rule 4
		 'statement', 2,
function($_)//line 23 "examples\calc\Calc.ypj.yp"
{ _output($_[1].value) }
	],
	[//Rule 5
		 'exp', 1,
function($_)//line 26 "examples\calc\Calc.ypj.yp"
{ return $_[1].value  }
	],
	[//Rule 6
		 'exp', 1,
function($_)//line 27 "examples\calc\Calc.ypj.yp"
{ return $_[1].value.slice(1,-1)  }
	],
	[//Rule 7
		 'exp', 1,
function($_)//line 28 "examples\calc\Calc.ypj.yp"
{ return $_[1].value  }
	],
	[//Rule 8
		 'exp', 3,
function($_)//line 29 "examples\calc\Calc.ypj.yp"
{ return $_[1].value + $_[3].value }
	],
	[//Rule 9
		 'exp', 3,
function($_)//line 30 "examples\calc\Calc.ypj.yp"
{ return $_[1].value - $_[3].value }
	],
	[//Rule 10
		 'exp', 3,
function($_)//line 31 "examples\calc\Calc.ypj.yp"
{ return $_[1].value * $_[3].value }
	],
	[//Rule 11
		 'exp', 3,
function($_)//line 32 "examples\calc\Calc.ypj.yp"
{ return Math.pow($_[1].value, $_[3].value)}
	],
	[//Rule 12
		 'exp', 3,
function($_)//line 33 "examples\calc\Calc.ypj.yp"
{
								  if($_[3].value == 0){
									$_[0].Error('divided by zero.',false);
								  }
                                  return $_[1].value / $_[3].value
                                 }
	],
	[//Rule 13
		 'exp', 2,
function($_)//line 39 "examples\calc\Calc.ypj.yp"
{ return -$_[2].value }
	],
	[//Rule 14
		 'exp', 3,
function($_)//line 40 "examples\calc\Calc.ypj.yp"
{ return $_[3].value }
	],
	[//Rule 15
		 'exp', 3,
function($_)//line 41 "examples\calc\Calc.ypj.yp"
{ return $_[2].value }
	]
]);
Calc.prototype.Lexer = function(){var tok;if(tok = this._source.match(/^([0-9]+(?:\.[0-9]+)?)/g)){tok[0]=parseFloat(tok[0]);this._source = this._source.replace(/^([0-9]+(?:\.[0-9]+)?)/g,'');return{id:'NUM',value:tok[0]};}if(tok = this._source.match(/^\"([^\"\\]|(\\.))*\"/g)){this._source = this._source.replace(/^\"([^\"\\]|(\\.))*\"/g,'');return{id:'STR',value:tok[0]};}if(this.ExpectFor('REG')){if(tok = this._source.match(/^\/([^\/\\]|(\\.))*\//g)){this._source = this._source.replace(/^\/([^\/\\]|(\\.))*\//g,'');return{id:'REG',value:tok[0]};}}};